Command Palette

Search for a command to run...

THIRD SEMESTERcoretheorySem 3

PROGRAMMING PARADIGMS

CSS 2180

Syllabus

  • 01Imperative Programming: Assignments, side effects, memory models, control structures, branching, procedures, parameter passing (Discussions using C and Go)
  • 02Object-Oriented Programming: Concepts of objects, classes, inheritance, specialization of methods, covariance and contravariance, type parametrization, reflective and meta programming (Discussions using Java and Go)
  • 03Functional Programming: Pure functions, lists, recursive functions, higher order functions, closures, curry functions, lambdas, evaluation as computation, folds (Discussions using JavaScript, Haskell, ML, or Clojure)
  • 04Parallel and Concurrent Programming: Concurrent programming model, parallelism, message passing, thread models, synchronization, deadlocks, live locks, GPU programming principles (Discussions using Scala, Java, C and Go)
  • 05Integrated View of Applications of Paradigms: Problem analysis and choosing appropriate paradigm for different components of applications, Interoperability between different programming languages - JVM languages, Foreign Function Interface, and services

References

  • B.W. Kernighan and D. Ritchie, "The C Programming Language," PHI, 1988
  • A.A. Donovan and B.W. Kernighan, "The Go Programming Language," PHI, 2016
  • C. Horstmann, "Core Java, Vol I", 12th Edition, Pearson, 2023
  • C. Horstmann, "Core Java, Vol II", 12th Edition, Pearson, 2023
  • D. Flanagan, "JavaScript: The Definitive Guide," 7th Edition, O'Reilly 2020
  • M. Odersky et.al. "Programming in Scala," 5th Edition, Goel's Computer Hut, 2022
  • Class notes and handouts
Credits Structure
4Lecture
0Tutorial
0Practical
4Total